With class-wide objects only methods can be called which are declared or inherited by the base class of the class-wide object.

Assume, class special_packet_1 declares and implements an additional method check_data. Now, we define a polymorphic object of base class packet.

object:packet'CLASS;

Now, assume that the actual type of object has changed to special_packet_1 during runtime. Although the actual type of object is special_packet_1, the following method call is not allowed:

object.check_data

The basic idea to introduce polymorphic objects was, that they can be used independed from their actual type in a uniform manner. The call of the check_data method is in contradition to this idea because this would only work if the actual type of object is special_packet_1.